package com.harveyguo.nihonngo.service;

import com.harveyguo.nihonngo.enums.EventLevel;
import com.harveyguo.nihonngo.model.dto.EventDto;

import java.util.Date;
import java.util.List;

/**
 * 赛事Service接口
 */
public interface EventService {

    /**
     * 创建赛事
     */
    EventDto createEvent(EventDto eventDto);

    /**
     * 根据ID查找赛事
     */
    EventDto findById(String id);

    /**
     * 查找所有赛事
     */
    List<EventDto> findAll();

    /**
     * 根据拳馆ID查找赛事
     */
    List<EventDto> findByGymId(String gymId);

    /**
     * 根据赛事级别查找
     */
    List<EventDto> findByLevel(EventLevel level);

    /**
     * 根据活跃状态查找赛事
     */
    List<EventDto> findByActive(Boolean isActive);

    /**
     * 根据状态查找赛事
     */
    List<EventDto> findByStatus(String status);

    /**
     * 查找即将开始的赛事
     */
    List<EventDto> findUpcomingEvents(Date startDate);

    /**
     * 查找附近的赛事
     */
    List<EventDto> findNearbyEvents(Double latitude, Double longitude, Double radius);

    /**
     * 更新赛事信息
     */
    EventDto updateEvent(String id, EventDto eventDto);

    /**
     * 删除赛事
     */
    void deleteEvent(String id);

    /**
     * 报名参加赛事
     */
    EventDto joinEvent(String eventId, String userId);

    /**
     * 取消报名
     */
    EventDto cancelEvent(String eventId, String userId);
}